package com.caifu.service;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.caifu.bean.Result;
import com.caifu.pojo.SysUser;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 * 用户表 用户表 服务类
 * </p>
 *
 * @author Lyf
 * @since 2020-07-07
 */
public interface SysUserService extends IService<SysUser> {

    /**
     * 功能描述: 根据用户登录名获取用户信息
     *
     * @auther: Lyf
     * @date: 2020/7/7 15:27
     * @param:
     * @return:
     */
    SysUser getUserByLoginName(String loginName, String postType)throws Exception;

    /**
     * 功能描述: 根据用户登录名获取用户信息
     *
     * @auther: Lyf
     * @date: 2020/7/7 15:27
     * @param:
     * @return:
     */
    SysUser getUserByLoginName(String loginName)throws Exception;

    /**
     * 功能描述: 根据查询条件查询用户列表
     *
     * @auther: Lyf
     * @date: 2020/7/14 16:33
     * @param:
     * @return:
     */
    IPage<Map<String,Object>> getUserList(int currentPage, int pageSize, String loginName, String userName, String phone, String postType)throws Exception;

    /**
     * 功能描述: 更新最后登录时间
     *
     * @auther: Lyf
     * @date: 2020/7/14 18:11
     * @param:
     * @return:
     */
    void updateLoginTime(String loginName)throws Exception;

    /**
     * 功能描述: 根据用户账号获取用户记录数
     * @Param:  [loginName, userNo, postType]
     * @Author: szt
     * @Date:   2020/11/12
     */
    int getCountByLoginName(String loginName,String userNo)throws Exception;

    /**
     * 功能描述: 设置用户菜单权限
     *
     * @auther: Lyf
     * @date: 2020/7/16 13:06
     * @param:
     * @return:
     */
    void setUserMenu(int userNo,String menus)throws Exception;
    
    /**
     * 设置用户数据权限
     * 2020年8月12日 
     * codeBy szt
     */
    Result<Object> setUserAuth(int userNo,String orgStr,int tellerNo) throws Exception;

    /**
     * 设置用户用户权限
     * 2020年9月6日
     * codeBy szt
     */
    Result<Object> setUserApp(int userNo,String appStr,int tellerNo) throws Exception;

    /**
     * 功能描述: 登陆失败，记录当天登陆失败次数
     * @Param:  [userNo, loginName]
     * @Author: szt
     * @Date:   2020/9/6
     */
    void loginError(int userNo,String loginName) throws Exception;

    /**
     * 功能描述: 登陆成功，清空当天登陆失败次数
     * @Param:  [userNo, loginName]
     * @Author: szt
     * @Date:   2020/9/6
     */
    void loginSuccess(int userNo,String loginName) throws Exception;


    /**
     * 功能描述: 保存
     *
     * @auther: szt
     * @date: 2020/9/6 13:32
     * @param:
     * @return:
     */
    void saveOrUpdate(SysUser operUser,SysUser user,boolean isNew,String authRole, String authOrg, String postType);


    /**
     * 功能描述: 停用用户
     *
     * @auther: Lyf
     * @date: 2020/9/6 15:01
     * @param:
     * @return:
     */
    void close(String userNo,String postType);

    /**
     * 功能描述: 删除用户（逻辑删除）
     *
     * @auther: Lyf
     * @date: 2020/9/6 15:01
     * @param:
     * @return:
     */
    void delete(String userNo,String postType);

    /**
     * 功能描述: 绑定微信用户
     * @Param:  [userNo]
     * @Author: szt
     * @Date:   2020/9/6
     */
    void bindSysWechatUser(String userNo) throws Exception;
}
